home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / pm-utils / sleep.d / 00auto-quirk < prev    next >
Text File  |  2009-10-06  |  2KB  |  92 lines

  1. #!/bin/sh
  2.  
  3. . "${PM_FUNCTIONS}"
  4.  
  5. do_add_quirks()
  6. {
  7.     local quirks="$(lshal | \
  8.         awk -F '[. ]' \
  9.         '/  power_management.quirk.[0-9a-z_]+ = true/ \
  10.             {gsub(/_/, "-", $5); printf("--quirk-%s ", $5)}')"
  11.     echo "Adding quirks from HAL: $quirks"
  12.     add_parameters $quirks
  13. }
  14.  
  15. do_save_quirks()
  16. {
  17.     # better to gather too much information than not enough
  18.     hgp="hal-get-property --udi /org/freedesktop/Hal/devices/computer --key"
  19.     vendor=$($hgp system.hardware.vendor)
  20.     product=$($hgp system.hardware.product)
  21.     firmware=$($hgp system.firmware.version)
  22.     video_vendor=$($hgp system.hardware.primary_video.vendor --hex)
  23.     video_card=$($hgp system.hardware.primary_video.product --hex)
  24.     (
  25.     exec >"/etc/hal/fdi/information/99local-pm-utils-quirks.fdi"
  26.     echo '<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->'
  27.     echo '<!-- Created by pm-utils -->'
  28.     echo '<deviceinfo version="0.2">'
  29.     echo '  <device>'
  30.     echo "    <match key=\"system.hardware.vendor\" string=\"${vendor}\">"
  31.     echo "      <match key=\"system.hardware.product\" string=\"${product}\">"
  32.     echo "        <match key=\"system.firmware.version\" string=\"${firmware}\">"
  33.     echo "          <match key=\"system.hardware.primary_video.vendor\" int=\"0x${video_vendor}\">"
  34.     echo "            <match key=\"system.hardware.primary_video.product\" int=\"0x${video_card}\">"
  35.     for p in ${PM_CMDLINE}; do
  36.         quirk="${p#--quirk-}"
  37.         [ "$p" = "$quirk" ] && continue
  38.         echo "              <merge key=\"power_management.quirk.${quirk}\" type=\"bool\">true</merge>" |tr - _
  39.     done
  40.     echo "            </match>"
  41.     echo "          </match>"
  42.     echo "        </match>"
  43.     echo "      </match>"
  44.     echo "    </match>"
  45.     echo "  </device>"
  46.     echo "</deviceinfo>"
  47.     )
  48.     echo "FDI file created as /etc/hal/fdi/information/99local-pm-utils-quirks.fdi"
  49. }
  50.     
  51. maybe_add_quirks()
  52. {
  53.     [ -z "$PM_CMDLINE" ] && {
  54.         command_exists lshal || return $NA
  55.         do_add_quirks
  56.         return 0
  57.     }
  58.     command_exists lshal || { 
  59.         echo "--auto-quirks requires HAL. Aborting"
  60.         return 1
  61.     }
  62.     has_parameter --auto-quirks || return 0
  63.     do_add_quirks
  64.     remove_parameters --auto-quirks
  65. }
  66.  
  67. maybe_save_quirks()
  68. {
  69.     inhibited && return 0
  70.     has_parameter --store-quirks-as-fdi && do_save_quirks
  71.     return 0
  72. }
  73.  
  74. help()
  75. {
  76.     echo
  77.     echo "Auto quirk handler option:"
  78.     echo
  79.     echo "  --auto-quirks"
  80.     echo "  Running without any options will also invoke auto quirk."
  81.     echo
  82.     echo "  --store-quirks-as-fdi"
  83. }
  84.  
  85. case $1 in
  86.     suspend|hibernate) maybe_add_quirks ;;
  87.     thaw|resume) maybe_save_quirks ;;
  88.     help) help ;;
  89.     *) exit $NA ;;
  90. esac
  91.  
  92.